The Synchronised Multimedia Language (SMIL) provides declarative mark-up instructions for specifying the temporal behaviour of a mark-up document. SMIL defines both the mark-up and semantics necessary to specify the timing of animations and multi-media content in such a mark-up document. SMIL also describes the timing model.
SMIL was designed for integrating into other mark-up languages such as Scalable Vector Graphics (SVG) and Extensible Hypertext Mark-up Language (XHTML). Those other mark-up languages are able to re-use the SMIL mark-up and semantics to provide multi-media and animation functionality within those languages.
SMIL provides timed elements, which are elements that have semantics associated with their temporal states. Examples of timed elements include animations, time containers and multimedia elements.
SMIL therefore provides the concept of a time container. Time containers are a special case of timed elements that group timed elements together in a temporal relationship. SMIL provides for 3 different time containers, namely:                ‘Par’, a parallel time container where all child timed elements run in parallel, i.e. all at the same time.        ‘Seq’, a sequential time container where all child timed elements run sequentially, i.e. one after the other in document order. More specifically the implicit begin time of a child timed element is the end of the previous timed element. Also, the implicit begin time of the first child timed element, is the begin time of the parent time container.        ‘Excl’, an exclusive time container where all child timed elements run exclusively, i.e. only one child can be running at any time.        
Appendix A shows an example of the SMIL syntax. This example shows a set of SMIL time containers. Six instances of ‘timed content’ are shown within the time containers. Under this example, timed content 1 would be played first, followed by simultaneous playing of timed content 2 and timed content 3. After the conclusion of both timed content 2 and timed content 3, timed content 4 would be played, followed by timed content 5 and finally timed content 6.
SMIL further defines attributes that may be used to specify the temporal behaviour of timed elements. These include the synchronisation of the timed elements, repeating conditions and begin and end conditions.
The ‘begin’ attribute specifies a condition such as a time or event that causes a timed element to begin playing. The valid begin times for timed elements also depend on the relationship between the timed element and the containing parent) time container and other timed elements within the containing time container, commonly referred to as sibling timed elements. Similarly, the ‘end’ attribute specifies a condition that causes a timed element to end.
From the description above it can be seen that the timing of any timed element (i.e. when it is played) within an SMIL presentation, or another language that re-uses the SMIL language and/or semantics, is dependent on the timing attributes and the relationship of the timed element to other time containers and timed elements.
The ‘begin’ and ‘end’ attributes may be specified as lists. These lists may include specification of clock times, relative times, event occurrences and other possible conditions. Event occurrence conditions are particularly useful for controlling transitions between time containers. Using event occurrences as conditions allows the clicking of a button (clicking the graphical representation of an element), or a similar action, to trigger the beginning or ending of a time container. An event occurrence is specified by the event (eg. a pointer click) and the “target element”, defined in SVG as the topmost graphics element whose relevant graphical content is under the pointer at the time of the event.
Printing languages typically specify a scoping restriction on the content in each page. Content designated for a particular page may make references to a global dictionary of resources, such as graphics, fill properties or fonts. Content for a particular page cannot reference content defined within the bounds of another page construct.
The scoping restriction applied to printing languages allows a job to be processed using a reduced amount of memory. The reduced memory results from the fact that the contents of each page do not need to be stored after the page has been rendered, allowing a more efficient print renderer implementation.
SVG 1.2 includes syntax for providing pagination. This syntax specifies that a ‘pageSet’ element indicates the start of paginated content. Any graphical content prior to the ‘pageSet’ element is rendered on every page. Global resources for the document should also be defined prior to the ‘pageSet’ element.
A ‘pageSet’ element may include any number of ‘page’ elements. A ‘pageSet’ element may only have children ‘page’ elements. Further, there may be no direct descendents (i.e. children) of a ‘pageSet’ element other than ‘page’ elements.
A ‘page’ element includes the graphical content that is to be rendered only on that particular page. Children of a ‘page’ element can only reference global resources or graphics defined prior to the ‘pageSet’ element or content within the current ‘page’ element. A ‘page’ element and its contents are prohibited from referencing content within other ‘page’ elements.
An example of the structure of SVG content for paginated display or printing is shown in Appendix B. This example shows where global resources or graphics, and the content of each page, should be placed.
A graphical language, such as SVG, may reuse the page functionality to provide a way of instantiating a SMIL presentation. This is particularly useful for providing a document that is suitable for slides displayed on a screen in a meeting/presentation and which can also be printed. SVG 1.2 does this by defining the ‘pageSet’ element's timing behaviour as analogous to the SMIL ‘seq’ time container and the ‘page’ element's time behaviour as analogous to that of the SMIL ‘par’ behaviour. Any timed elements such as animations within the content of a page will typically be ignored by a printing renderer.
The scoping restriction as applied by SVG 1.2 means that the ‘begin’ and ‘end’ attributes of a ‘page’ element may only specify event based conditions for events whose target elements are within that ‘page’ element. This prohibits a ‘page’ element from specifying a ‘begin’ attribute referencing an event whose target element is within a prior or later ‘page’ element. The scoping restriction therefore makes it impossible to provide declarative ‘page back’ functionality in SVG that may be included in slide presentations for slide navigation.
Relaxing the scoping rules for these particular attributes introduces unwanted inconsistency into the SVG instruction set. Implementations of an instruction set parser cannot be optimised for significantly improved efficiency in interpreting an instruction set if that instruction set is not consistent with regards to the scoping rules. Globally relaxing the scoping rules, thereby introducing unnecessary dependencies between pages, would greatly reduce the efficiency of print implementations.
A further alternative that may be adopted to provide page navigation is to make use of scripting. A script with global scope could be defined that uses, for example, the ‘beginElement’ method to start the appropriate pages on the occurrence of relevant events. Such a script would have to know the identifier of each ‘page’ element and the order of the ‘page’ elements, and then keep track of the currently displaying ‘page’ elements. The script would also have to be tailored to each particular document. It is therefore difficult, if not impossible, to create a template presentation that uses a script to provide page navigation. Moreover, a scripting engine is a large overhead for a User Agent.